//
//  XYO2OModule.h
//  O2O_iOS
//
//  Created by 唐海洋 on 2021/7/30.
//

#import <Foundation/Foundation.h>
#import "XYO2OModuleService.h"

NS_ASSUME_NONNULL_BEGIN

@interface XYO2OModule : NSObject

@property (nonatomic, weak) id <XYO2OModuleServeDelegate> delegate;

//设置定位权限
//Privacy - Location Always and When In Use Usage Description   我们需要获取定位信息，用于计算当前位置与商家店铺之间的距离
//Privacy - Location When In Use Usage Description 我们需要获取定位信息，用于计算当前位置与商家店铺之间的距离
/// url
@property (nonatomic, copy)   NSString *o2oUrl;
/// 主题色：#f38242
@property (nonatomic, copy)   NSString *themeColor;
/// 导航背景色
@property (nonatomic, copy)   NSString *navigationColor;
/// UA标志符：xinhuamm
@property (nonatomic, copy)   NSString *userAgent;
/// 这个和微信支付回调的链接域名的有关系的： xyqm.market.platform.xinhuaapp.com
@property (nonatomic, copy)   NSString *weixinSchemeUrl;
/// app 私有协议
@property (nonatomic, copy)   NSString *appUrlScheme;
/// 登陆用户的id
@property (nonatomic, copy)   NSString *userId;
/// 允许外部设置O2OController页面的frame
@property (nonatomic, assign) CGRect o2oViewFrame;
/// 是否展示导航条，公有云需要展示o2o 不需要，默认 NO；
@property (nonatomic, assign) BOOL showNavigationBar;
/// 导航条显示与否交给 SDK 处理  默认为 sdk 处理
@property (nonatomic, assign) BOOL notAutoShowNavigationBar;
/// 网页加载的文件地址链接，进行特殊逻辑处理，例如：safari打开
@property (nonatomic, strong) NSArray *pathExtensions;
/// 是否展示loading
@property (nonatomic, assign) BOOL needShowLoading;
/// 首页弹窗广告【废弃⚠️】
@property (nonatomic, assign) BOOL isShowPopup;

/// 设置代理并push的方式打开O2O页面
/// @param target id
- (void)showO2OWith:(id)target;

/// 设置代理
/// @param target id
- (void)configDeleage:(id)target;

/// 获取 url 类型
/// @param urlString 需要判断的 url
+ (XYO2OUrlType)getSDKUrlType:(NSString *)urlString;

/// 是否是 sdk 支持的 url 类型
/// @param urlString  url
+ (BOOL)isSDKUrl:(NSString *)urlString;

/// 是否是 sdk 支持的扫码结果
/// @param codeString  code
+ (BOOL)isSDKQRCodeString:(NSString *)codeString;

/// 根据扫码结果获取url  调用此接口前先判断是否是 sdk 支持的扫码结果
/// @param scanResult 扫码结果 string
+ (NSString *)getUrlStringWithScanResult:(NSString *)scanResult;

/// 打开扫码页面
+ (void)openScanPage:(void(^)(NSString *scanResult))block;

#pragma mark - 核销奖品

/// 核销商品
/// @param result 扫码结果 调用此方法前请确保扫码结果是核销的二维码
/// @param phone 手机号  必传参数
/// @param completeBlock 核销结果回调
+ (void)xyO2OWriteOffGoods:(NSString *)result phone:(NSString *)phone completeBlock:(XYO2OWriteOffHandler)completeBlock;

/// 积分商城
/// @param result 扫码结果 调用此方法前请确保扫码结果是核销的二维码
/// @param phone 手机号
/// @param parameDic 其他参数 appkey appSecret
/// @param completeBlock 核销结果回调
+ (void)xyO2OCommonVerify:(NSString *)result phone:(NSString *)phone withOtherParameDic:(NSDictionary *)parameDic completeBlock:(XYO2OWriteOffHandler)completeBlock;

#pragma mark - 免登接口

/// 免登处理
/// @param accountId accountId
/// @param sessionId sessionId
/// @param redirectUrl redirectUrl
/// @param ryloginHandler 免登成功的回调
+ (void)xyO2ORylogin:(NSString *)accountId
           sessionId:(NSString *)sessionId
         redirectUrl:(NSString *)redirectUrl
      ryloginHandler:(XYO2ORyloginHandler)ryloginHandler;


@end

NS_ASSUME_NONNULL_END
